package Motor;
public class Player {

	private int pillz;
	private ListaCartas deck;
	private int[] mano;
	private ListaCartas heros;
	int proxCarta;

	public Player(ListaCartas d, ListaCartas h) {
		setPillz(6);
		setDeck(d);
		setHeros(h);
		setMano(new int[3]);
		getMano()[0] = 0;
		getMano()[1] = 1;
		getMano()[2] = 2;
		proxCarta = 3;
	}

	public boolean manoFull() {
		int i = 0;
		boolean b = true;
		while (i < 3 && b) {
			b = getMano()[i] != -1;
			i++;
		}
		return b;
	}

	public void robarCarta() {
		int i = 0;
		boolean b = false;
		while (i < 3 && !b) {
			b = getMano()[i] == -1;
			i++;
		}
		i--;
		if (b && proxCarta < this.getDeck().getList().length) {
			getMano()[i] = proxCarta;
			proxCarta++;
		}
	}

	public Carta usar(int n) {
		int aux = getMano()[n];
		getMano()[n] = -1;
		return getDeck().getList()[aux];
	}
	
	public Carta verCartaMano(int n){
		int i=mano[n];
		if (i==-1){
			return null;
		}
		return deck.getList()[mano[n]];
	}

	public Carta usarHero(int n) {
		return getHeros().getList()[n];
	}

	public int heroesVivos() {
		int s = 0;
		int i;
		Hero h;
		for (i = 0; i < this.getHeros().getN(); i++) {
			h = (Hero) getHeros().verCarta(i);
			if (h.getHlt() > 0) {
				s++;
			}
		}
		return s;
	}
	
	public int numCartas(){
		return this.getDeck().getList().length-proxCarta;
	}

	public ListaCartas getDeck() {
		return deck;
	}

	public void setDeck(ListaCartas deck) {
		this.deck = deck;
	}

	public ListaCartas getHeros() {
		return heros;
	}

	public void setHeros(ListaCartas heros) {
		this.heros = heros;
	}

	public int[] getMano() {
		return mano;
	}

	public void setMano(int[] mano) {
		this.mano = mano;
	}

	public int getPillz() {
		return pillz;
	}

	public void setPillz(int pillz) {
		this.pillz = pillz;
	}

	public Player copiar() {
		// TODO Auto-generated method stub
		Player aux=new Player(deck.copiar(), heros.copiar());
		aux.mano=new int[this.mano.length];
		for (int i=0;i<aux.mano.length;i++){
			aux.mano[i]=this.mano[i];
		}
		aux.pillz=this.pillz;
		aux.proxCarta=this.proxCarta;
		
		return aux;
	}
	
	public int numeroVidas(){
		int s=0;
		for(int i =0;i<getHeros().getN();i++){
			s=s+((Hero)(getHeros().verCarta(i))).getHlt();
		}
		return s;
	}

	public String mostrar() {
		// TODO Auto-generated method stub
		String s="HEROS[";
		for(int i=0;i<heros.getN();i++){
			try{
				s=s+heros.verCarta(i).mostrar()+"#";
			}catch(Exception e){
				s=s+"null#";
			}
			try{
				s=s+((Hero)heros.verCarta(i)).getEquipo().mostrar()+", ";
			}catch(Exception e){
				s=s+"null"+", ";
			}
		}		
		s+="], MANO[";
		for(int i=0;i<mano.length;i++){
			s=s+mano[i]+", ";
		}
		s+="], PILLZ["+pillz+"]]";
		return s;
	}
}
